package com.hsc.www.simpleTest;

import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

import java.util.ArrayList;
import java.util.List;

public class MongoJDBC {

    public static void main(String[] args) {
        MongoJDBC jdbc = new MongoJDBC();
        MongoClient mongoClient = jdbc.getMongoDatabase();


        //选择数据库
        MongoDatabase database = mongoClient.getDatabase("test");

        //获取集合
        MongoCollection<Document> collection = database.getCollection("student");

        //插入文档
        Document document1 = new Document("title", "MongoDB").
                append("description", "database").
                append("likes", 100).
                append("by", "Fly");

        Document document2 = new Document("title", "MongoDB").
                append("description", "database").
                append("likes", 100).
                append("by", "Fly");

        List<Document> documents = new ArrayList<>();
        documents.add(document1);
        documents.add(document2);
        collection.insertMany(documents);


        //检索所有文档
        FindIterable<Document> findIterable = collection.find();
        MongoCursor<Document> mongoCursor = findIterable.iterator();
        while (mongoCursor.hasNext()) {
            System.out.println(mongoCursor.next());
        }


//
//        //更新文档   将文档中likes=100的文档修改为likes=200
//        collection.updateMany(Filters.eq("likes", 100), new Document("$set", new Document("likes", 200)));
//        //检索查看结果
//        FindIterable<Document> findIterable = collection.find();
//        MongoCursor<Document> mongoCursor = findIterable.iterator();
//        while (mongoCursor.hasNext()) {
//            System.out.println(mongoCursor.next());
//        }

    }


    public MongoClient getMongoDatabase() {
        try {
            //连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址
            //ServerAddress()两个参数分别为 服务器地址 和 端口
            ServerAddress serverAddress = new ServerAddress("localhost", 27017);
            List<ServerAddress> addrs = new ArrayList<ServerAddress>();
            addrs.add(serverAddress);

            //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
            MongoCredential credential = MongoCredential.createScramSha1Credential("bob", "test", "123456".toCharArray());
            List<MongoCredential> credentials = new ArrayList<MongoCredential>();
            credentials.add(credential);

            //通过连接认证获取MongoDB连接
            MongoClient mongoClient = new MongoClient(addrs, credentials);

            return mongoClient;
        } catch (Exception e) {
            System.err.println(e.getClass().getName() + ": " + e.getMessage());
        }
        return null;

    }


}
